登录 白背景

374. 猜数字大小

https://leetcode-cn.com/problems/guess-number-higher-or-lower/

  • 提交时间:2021-11-11 18:54:39
  • 执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
  • 内存消耗:1.9 MB, 在所有 Go 提交中击败了100.00%的用户
  • 通过测试用例:25 / 25
/** 
 * Forward declaration of guess API.
 * @param  num   your guess
 * @return          -1 if num is lower than the guess number
 *                  1 if num is higher than the guess number
 *               otherwise return 0
 * func guess(num int) int;
 */

func guessNumber(n int) int {
    if n == 1 {
        return 1
    }
    leftPos := 1
    rightPos := n
    guessNum := n >> 1
    for {
        if leftPos == rightPos {
            break
        }
        guessRet := guess(guessNum)
        if guessRet == 0 {
            break
        }
        if guessRet == -1 {
            rightPos = guessNum
        }
        if guessRet == 1 {
            leftPos = guessNum + 1
        }
        guessNum = (rightPos + leftPos) >> 1
    }
    return guessNum
}